﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CRM.Database.Model
{
  public class BonusesCollection:AbstractCollection
    {

      public List<Bonuses> BonusesList
      {
          get { return Entities.Bonuses.ToList(); }
      }


      /// <summary>
      /// Обновление элемента в коллекции
      /// </summary>
      /// <param name="item">Новый элемент</param>
      /// <param name="userLogin">Логин пользователя, который делает изменения</param>
      /// <returns>Результат операции</returns>
      public new bool Update(object item, string userLogin)
      {
          var newObject = (Bonuses)item;
          if (newObject == null)
              return false;


          var object4Update = GetItemByIdFromDatabase(newObject.GetKeyValue()) as Bonuses;
          if (object4Update == null)
              return false;

          if (newObject.RegistrationDate!=null) object4Update.RegistrationDate = newObject.RegistrationDate;
          object4Update.IdLegalEntity = newObject.IdLegalEntity;
          if (newObject.IdPriceCondition!=null) object4Update.IdPriceCondition = newObject.IdPriceCondition;
          if (newObject.Value!=null) object4Update.Value = newObject.Value;
          if (!string.IsNullOrEmpty(newObject.Basement)) object4Update.Basement = newObject.Basement;
          if (newObject.IdBonusType!=null) object4Update.IdBonusType = newObject.IdBonusType;
          if (newObject.Amount!=null) object4Update.Amount = newObject.Amount;
          if (newObject.SigningDate!=null) object4Update.SigningDate = newObject.SigningDate;
          if (newObject.IdBonusStatus!=null) object4Update.IdBonusStatus = newObject.IdBonusStatus;
          if (newObject.ClosingDate!=null) object4Update.ClosingDate = newObject.ClosingDate;
         
          return base.Update(item, userLogin);
      }

      #region Overrides of AbstractCollection

      /// <summary>
      /// Получение списка элементов
      /// </summary>
      /// <returns>Список элементов</returns>
      public override List<object> GetList()
      {
          return new List<object>(BonusesList);
      }

      /// <summary>
      /// Получение типа текущего элемента
      /// </summary>
      /// <returns></returns>
      protected override Type GetItemType()
      {
          return typeof (Bonuses);
      }

      /// <summary>
      /// Получение статического списка для хранения объектов
      /// </summary>
      /// <returns></returns>
      public override object GetStaticCollection()
      {
          throw new NotImplementedException();
      }

      /// <summary>
      /// Получение элемента из коллекции по идентификатору
      /// </summary>
      /// <param name="itemId">Идентификатор</param>
      /// <returns>Элемент</returns>
      public override object GetItemById(int itemId)
      {
          return Entities.Bonuses.Find(itemId);
      }

      /// <summary>
      /// Обнуление статической коллекции
      /// </summary>
      protected override void SetStaticListToNULL()
      {
          throw new NotImplementedException();
      }

      #endregion
    }
}
